package modulo1.cci;

import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import modulo1.cdp.Matricula;
import modulo1.cdp.Turma;
import modulo1.cgt.ControleTurmaMatriculaApl;

@WebServlet(name = "NotaCtrl", urlPatterns = {"/Nota"})
public class NotaCtrl extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        RequestDispatcher cih = request.getRequestDispatcher("modulo1/conturmat/nota_cadastro.jsp");
        cih.forward(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String evento = request.getParameter("evento");
        if (evento != null) {
            if (evento.equals("inserir")) {
                try {
                    Turma turma = ControleTurmaMatriculaApl.getInstance().turmaConsultar(Long.parseLong(request.getParameter("id_turma")));
                    request.setAttribute("matriculas", turma.getListaMatriculas());
                    request.setAttribute("turma", turma);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            
            RequestDispatcher cih = request.getRequestDispatcher("modulo1/conturmat/nota_form.jsp");
            cih.forward(request, response);
            return;
        }

        String buscar = request.getParameter("buscar");
        try {
            List<Turma> turmas;
            if (buscar != null) {
                //TODO Corrigir essa beleza de buscar por ano
                turmas = ControleTurmaMatriculaApl.getInstance().turmaBuscarAno(Integer.parseInt(buscar));
            } else {
                turmas = ControleTurmaMatriculaApl.getInstance().turmaBuscarLiberada();
            }
            request.setAttribute("turmas", turmas);
        } catch (Exception ex) {
            // TODO Exceção buscar turma
        }

        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String evento = request.getParameter("evento");
        if (evento != null) {
            if (evento.equals("inserir")) {
                System.out.println("CASSIO BAITOLA");
                try {
                    Turma turma = ControleTurmaMatriculaApl.getInstance().turmaConsultar(Long.parseLong(request.getParameter("turma")));
                    List<Matricula> matriculas = turma.getListaMatriculas(); 

                    for (Matricula mat : matriculas) {
                        Float nota = Float.parseFloat(request.getParameter("nota_"+mat.getId()));
                        mat.setNotaFinal(nota);
                        ControleTurmaMatriculaApl.getInstance().matricular(mat);
                    }
                    
                    String redirect = "Nota";
                    String mensagem = "Nota salva com sucesso.";
                    response.sendRedirect("resultado.jsp?redirect="+redirect+"&mensagem=" + mensagem);
                    return;
                } catch (Exception e) {
                    e.printStackTrace();
                    String redirect = "Nota";
                    String mensagem = "Erro ao salvar notas.";
                    response.sendRedirect("resultado.jsp?redirect="+redirect+"&mensagem=" + mensagem);
                    return;
                }
            }
        }
        processRequest(request, response);
    }
}
